翻轉電子書系列:Java 程式設計()含物件導向 描述: 回首頁.png 

描述: 粘_4.png翻轉工作室:粘添壽

 

第一章 JDK 安裝與開發步驟

1-1 何謂程式語言?

1-1-1 編寫劇本的工具

何謂『程式』(Program)?打個比方,就是程式設計師(Programmer)扮演著『編劇者』的角色,製作了一套『劇本』,讓電腦依照劇本內容演出,如果將『程式』改稱為『演出表』,也許會更貼切。

我們需要一套規則來製作『劇本』,設計師利用此規則製作劇本;電腦也按照相同的規則執行劇本內容,如此一來,電腦與設計師之間的期望值才不至於發生落差。如果將製作劇本的規格工具化,任何人利用該工具製作劇本,所製作出來的劇本大多數『電腦』也都能明瞭其意思,此工具即是『程式語言』(Program language)。另外,利用程式語言編寫劇本,必須符合該語言的『文法』(grammar),『文法』即是程式的規則,如圖 1-1 所示。

1-1 程式語言與程式

由此可見,程式語言就如同『英文』一樣,我們利用正確的『單字』(如,關鍵字),與正確的文法(如,程式規則),將若干個單字組合成一個『句字』(如,敘述句)。也依照文法規範,將若干個句字組合成一篇文章(如,程式)。只要都合乎語言規則,任何人都可以依照文法規則閱讀該篇文章。同理可證,只要利用標準語言規則所編寫的程式,電腦應該都能執行才是。

到底電腦是一部機械裝置,它的處理能力是由人們所編寫軟體所規劃著。到目前為止,電腦還未具備思考及哲學推斷能力,只能依照程式軟體的步驟進行著。也就說,它僅能依照『劇本』演出,自己並無法判斷劇本的對錯;假如劇本有疏忽或不完整的地方,導致『演出』亂無章法或不能滿足預先所期望的結果,這完全不可歸咎於電腦,而是編寫『劇本』的軟體工程師的疏忽。

既然電腦是一部機器,沒有理解『人』自然語言的能力,也無法讀取一般文字(如中文、英文)所編寫的劇本;吾人並不能直接指揮電腦從事某些工作,必須透過某一種工具編寫劇本才行。另一方面,真實環境裡存在著多種表演型態(如歌仔戲、布袋戲、西洋歌劇、現代舞...等),每一種演出都有其特殊的地方,也需要其專屬的工具來編寫劇本。程式設計也如同此道理,需要許多專屬工具來製作各式各樣的劇本。隨著時代變遷與科技的進步,程式語言也不斷的演進並滿足時勢所需,如目前常見的 CJavaFortranVB 等等。每種程式語言都有其專門屬性,及特殊運用領域,無法直接比較之間的優劣點。雖然各種程式語言的運用領域不同,但編寫程式的技巧幾乎是相同的;也就是說,雖然有那麼多程式語言,利用他們將真實環境程式化的技巧及邏輯思維大致上是一樣的。

1-1-2 高階語言與機械語言

為了滿足各種環境需求,所以需要發展出許多『程式語言』來應對,這種想法,完全是從『人』的立場思考,純粹是方便『人』編寫程式,對『電腦』(演出者)來說,根本不是這麼一回事。因為到目前為止,電腦大多是由各種數位 IC 組成的機械,僅能辨識『0』與『1』,更清楚的說,電腦只能了解利用 0 1 的『機械語言』所編寫的程式,不管是早期的PascalFortran 到現在還有不少愛用者的CVB,以及本書介紹的Java,如果沒有經過適當的轉換,電腦都看不懂。只是因為要人們利用機械語言編寫程式,非一般人所能及,所以需要使用CJava…這些比較靠近人類自然語言的程式語言編寫程式,然後利用稱之為『編譯器』(Compiler)的專屬軟體,將其翻譯成電腦所認識的『機械語言』,如圖 1-2 所示。

1-2 程式語言的編譯器

我們將『人』所使用的語言工具,稱之為『高階語言』,所編寫出來程式檔案稱為『原始檔』;電腦所認識的語言稱為『低階語言』或『機械語言』,其所構成的檔案稱為『目的檔』或『機械碼』;而將原始檔轉換成目的檔的工具稱為『編譯器』。

不同系列的『中央處理機』(CPU)都有各自的『機械語言』,之間是很難相容的;譬如 Motorola 68000 系列與 Intel Pentium 系列之間的機械碼,則完全不能相容。也就是說,同樣語言編寫出來的程式,利用 Pentium 主機編譯後得到的機械碼,無法移植到 Alpha 主機上執行,因為兩者之間的 CPU 型態並不相同;即使是相同 CPU 型態的主機,若使用不同的作業系統,其機械碼不一定可以相容。如果要機械碼相容的話,不但必須使用相同系列的CPU(如 Pentium 系列),也要採用相同系列的作業系統才可以(如 Windows 系列)。由此可見,機械語言對系統的相依性非常高,同樣的程式語言,在不同的主機電腦上,都有各自的『編譯器』。

1-2 建立 Java 程式開發環境

Java 是由 sun 公司發展出來,語言規範也大多由該公司所制定,是目前解決跨平台軟體設計的最佳工具。Java 將程式發展環境(JDSKjavac)與執行環境(JVMjava)分開,任何系統上所發展出來的軟體程式,可容易的移植到任何系統上執行,只要系統上有 JVMJava Virtual Machine)即可。Sun 公司將 Java 軟體開發環境掛載於網路上(java.sum.com),完全免費讓任何人下載使用;更難得可貴的,也隨時發展許多功能強大的軟體套件(如 Swing),以供使用者發展應用系統。

由此可見,Sun 公司除了免費提供 Java 語言的學習工具外,更提供許多強大的發展工具。這方面與其他語言不同,學習其他程式語言大多需要購買該語言的發展工具(如 Visual Basic),或則僅能使用試用版。不然的話,採用一些免費的發展工具(如 Dev C++),大致上都沒有特殊套件或庫存函數可供學習,就算有也得另外花錢買。簡單的說,學習 Java 語言不但不須購買發展工具,而且它的發展工具功能非常的強。

1-2-1 Java JDK套件安裝

Java 包含兩只軟體套件,一者為開發程式的 J2SDK;另一者為執行 Java 程式的 JVM。應注意的是,兩套軟體都必須安裝,其步驟如下:

進入官方網站後,點選 Windows x86 版本,如下:

由下載目錄下,可觀察到此檔案:

 

進入安裝狀況:

 

 

1-2-2 測試 JDK 執行環境

 (A) 步驟 1:啟動『命令提示字元』

除非利用其他發展工具(如 JavaBuilt),否則編譯與執行 Java 程式,大於『命令提示字元』視窗下,以『命令行』(Windows 命令)方式操作。開啟『命令提示字元』視窗如下:由桌面『開始』→『所有程式』→『附屬應用程式』,再點選『命令提示字元』,則可出現下列視窗(可建立捷徑於桌面上):

(B) 步驟 2:測試 J2SDK - javac

進入『命令提示字元』後,可立即執行『javac』命令測試 J2SDK 是否安裝正確。如下圖所示,執行 javac 後會出現一大串訊息,表示系統環境正確;如僅出現『'javac' 不是內部或外部命令』,則可能是 J2SDK 安裝不正常,或環境變數 Path 沒有設定正確,請回到 1-3-1(步驟 3),重新安裝或設定 Path 變數。

同樣的,執行 java 命令可以測試 JREJava Runtime Environment)是否安裝正確,如出現下圖樣式,表示正常,否則必須重新安裝 jdk-1_5_0(或其他版本)套件。

1-2-3 Java DOC 文件查詢

近十幾年,利用 Java 發展的軟體越來越廣泛,想得到的地方都有 Java 的蹤影,幾乎是包山包海,譬如:資料庫應用、網路應用、網路通訊、密碼系統、資訊安全、、等等,連目前最夯的 App 也不放過。只要您想得到、有心學習,Java 都提供最佳的發展平台。為何 Java 有此廣大功能呢?因為它包含了各種領域應用系統的發展套件,只要您會使用這些套件,發展任何應用系統都沒問題,然而,Java 將套件的使用方法,很仔細的歸納如下: (很可惜它都是英文,看不懂英文很難成為厲害的程式設計師)

該網站上列出目前有哪些套件(Packages, 左上角視窗),當您選擇某一套件後,立即歸納出該套件有哪些類別(Classes, 左下角視窗),每一種類別表現某一特殊功能。當選擇某一類別之後,將會顯示該類別包含哪些方法(method, 右邊視窗),並顯示所有方法的引用方法,如下圖所示。

1-3  Windows 檔案結構與常用命令

基本上,JVM Windows 系統是利用『命令提示字元』視窗操作的(透過其他發展工具,諸如 JavaBuilt就可省略 Windows 命令操作)。我們先認識一些簡單的 Windows 操作命令,對爾後操作電腦會有很大的幫助。

1-3-1 Windows 檔案結構

Windows 是利用樹狀結構來紀錄檔案儲存位置,如圖 1-7 所示。每一檔案儲存裝置以單一英文字母標示其名稱,如 ABC…等等;習慣上將 A B 識別保留給軟式磁碟機使用,由 C 字母開始為硬式磁碟機、光碟機或隨身碟記號。每一磁碟機(如 C: 磁碟機)各自建立一只如樹根往下延伸的檔案系統,樹頭為所有樹根的起始位置稱之為『根』(rootC:\);樹根往下延伸,會出現許多節點,如果某一節點允許再往下延伸,則稱為『目錄』(Directory)或『資料夾』;不允許往下延伸的端點則是『檔案』(File)。每一目錄(或資料夾)允許儲存多個檔案,以若干個子目錄。

1-7 Windows 檔案結構

每一個檔案儲存裝置(如磁碟機、光碟機、隨身碟...等)都有一只樹狀檔案系統,圖 1-7 C 磁碟機上的檔案結構,檔案名稱格式如下:

另外,一般檔案的名稱由兩個元件所構成:檔案名稱.檔案型態,如Example.java,則檔案名稱為 Example;檔案型態為 java。在 Windows 系統上,使用者開啟某一檔案時,它是由檔案型態來決定啟動哪一個軟體,因此,檔案型態很重要,不可以取錯。

1-3-2 Windows 常用命令

在『命令提示字元』下,較常用的檔案管理工具有:

C:\> dir                  (顯示目前工作目錄下的檔案)

C:\> del  f1 .java          (刪除 f1.java 檔案)

C:\> copy  f2.java  f3.java   (複製 f2.java 成為 f3.java)

C:\> copy  c:\d2\d4\f6  (複製 C:\d2\d4\f6 檔案到目前工作目錄下)

C:\> ren  f2.java  f3.java   (將 f2.java 名稱改為 f3.java

C:\> type  f2.java         (顯示 f2.java 檔案內容)

在『命令提示字元』下,較常用的目錄操作工具有:

C:\> d:                 (切換到 D 磁碟機上操作)

D:\>cd  \               (將工作目錄切換到根目錄)

D:\>md  java            (建立新目錄,名稱為 java

D:\>cd  java             (將工作目錄切換到 java 目錄下)

D:\java> cd ..             (切換到父目錄)

D:\> rd  java             (移除掉 java 目錄)

目錄操作上有兩個特殊符號,一個句點『.』表示目前目錄;兩個句點『..』表示父目錄(上一層目錄位置)。如系統顯示提示符號為『D:\java\Ex2_1>』,則表示於磁碟機 D 下操作,目錄位置是 D 磁碟機根目錄(D:\)下的 java 子目錄(D:\java),又 java 目錄下的 Ex2_1 子目錄(D:\java\Ex2_1)下操作之意思。

1-4 Java 程式開發

1-4-1 程式編輯工具 - NotePad

我們需要一只工具來編寫程式,最基本工具是『記事本』,但它缺乏程式碼的檢測能力,比較困難編寫程式。之前本書採用 Eclipse,但它主要再編寫 Android 程式使用(新版本也不用了),產生太多附屬程式,反而讓學生產生困擾。因此,本書新的版本採用 NodePad 來製作程式,他可以檢測許多程式語言,譬如:C++Java PHP 等等語言,是目前最流行的工具。NodePad 套件是免費軟體,只要在 Google 搜尋與安裝即可。

只要在 Google 搜尋 NodePad,再下載安裝即可:(只要按下一步)

利用 NotePad 編輯後,指定檔案名稱與存入時,須注意,如輸入檔案型態則須用雙引號包起來,或下拉式選用檔案型態。

1-4-2 一般程式開發程序

完成 j2SE 套件安裝程序後,即可開始編寫 java 程式,編寫與執行 java 程式的步驟如圖 1-8 所示。編寫 Java 原始程式需利用沒有排版功能的『記事本』,否則會插入排版符號造成編譯的困擾,簡單說明編譯程序如下:

1-8 Java 程式開發步驟

1-4-3 Java 程式開發步驟

本書將一個步驟接一個步驟,利用一個簡單範例(Demo.java),分別說明各步驟的操作方法,如下:

除非利用其他發展工具(如 JavaBuilt),否則編譯與執行 Java 程式,大於『命令提示字元』視窗下,以『命令行』(Windows 命令)方式操作。開啟『命令提示字元』視窗如下:由桌面『開始』→『所有程式』→『附屬應用程式』,再點選『命令提示字元』,則可出現下列視窗(可建立捷徑於桌面上):

習慣上,我們大多將自行建立的檔案儲存於 D 磁碟機(假設 C 磁碟機安裝裝 Windows 系統);又編寫 Java 程式時,一般都建議將一只程式放置於各自一個子目錄下(目前不嚴格限制)。假設目前欲練習編寫 Demo.java 程式,則建議在 D 磁碟機上,開啟一個專門存放 Java 程式的目錄,操作步驟如下圖所示。(假設 d:\tsnien_java 目錄)

(C) 步驟 3:『NotePad』編寫程式

接著開始編寫程式,可利用『記事本』或 NotePad 編寫。如利用 nodePad輸入 Demo.java 程式範例,如下圖所示。

(D) 步驟 4儲存檔案

儲存於 D:\java 目錄下,檔名為 Demo.java,如下圖所示,其中『存檔型態』選擇「所有檔案」。儲存後,點選『命令提示字元』視窗,並執行 dir 命令,觀察儲存檔案後的結果。

 

進入命令提示字元,觀察儲存結果,如下:

(E) 步驟 5:編譯 Java 程式 - javac

利用 javac 將原始檔案(Demo.java)編譯成 Bytecode檔案(Demo.class)。如下圖所示。

如果原始檔案內有語意錯誤的地方,將會出現錯誤訊息,就必須重新利用『記事本』修改原始檔案;如果沒有錯誤的地方,則不會顯示任何訊息,再利用 dir/b 檢視是否產生 Bytecode 檔(Demo.class)。

(F) 步驟 6:執行 Bytecode 程式 - java

產生 Bytecode 後,便可利用 JVMjava 命令)執行,下圖所示。

原始程式可以編譯產生 Bytecode,並不表示一定可以利用 JVMjava 命令)執行。雖然可以執行,但不表示所編寫的程式,能滿足所需。因此,如不能執行或執行結果不正常,都必須再利用『記事本』重新修改程式。

 

1-5 Java 程式範例

1-5-1 範例研討:翻轉教室公告

吾人期望顯示翻轉教室的公告如下:

********** 翻轉教室公佈事項 **********

(1) 學生上課前可收視 youtube 預習

(2) 每次播放視訊教學,以不超過 10 分鐘為限

(3) 課堂上學生輸入程式範例練習,有疑問隨時提問老師

(4) Youtube 播放挑戰題的製作技巧後,請學生自我挑戰

(5) 下課前,學生必須將範例與自我挑戰的製作結果上傳給老師

(6) 每次練習 4~5 題,一個學期練習 70 題以上,一定會寫程式

01

02

03

04

05

06

07

08

09

10

public class Ex1_1 {

public static void main(String[] args) {

System.out.println("********** 翻轉教室公佈事項 ********** ");

        System.out.println("(1) 學生上課前可收視 youtube 預習");

        System.out.println("(2) 每次播放視訊教學,以不超過 10 分鐘為限");

        System.out.println("(3) 課堂上學生輸入程式範例練習,有疑問隨時提問老師");

        System.out.println("(4) Youtube 播放挑戰題的製作技巧後,請學生自我挑戰");

        System.out.println("(5) 下課前,學生必須將範例與自我挑戰的製作結果上傳給老師");

        System.out.println("(6) 每次練習 4~5 題,一個學期練習 70 題以上,一定會寫程式");

}

}

1-5-2自我挑戰:上課注意事項

吾人期望列印本課程上課注意事項:

******* Java 程式設計()上課公約 *******

(1) 本課程採用『做中學』教學方式,學生多演練,老師從旁指導

(2) 老師減少講課時間,儘量讓學習自我練習,並隨時提問老師

(3) 課堂中隨時做範例與自我挑戰題目,學生一定要有書,老師會檢查

(4) 慢來同學如沒聽到老師講解,請自行收視 youTube,有問題再提問

(5) 下課前,學生必須將範例與自我挑戰的製作結果上傳給老師

(6) 缺課同學,請自行收視 youTube 練習,需繳交作業

01

02

03

04

05

06

07

08

09

10

11

12

System.out.println("******* Java 程式設計()上課公約 ******* ");

System.out.println("(1) 本課程採用『做中學』教學方式,學生多演練,老師從旁指導");

System.out.println("(2) 老師減少講課時間,儘量讓學習自我練習,並隨時提問老師");

System.out.println("(3) 課堂中隨時做範例與自我挑戰題目,學生一定要有書,老師會檢查");

System.out.println("(4) 慢來同學如沒聽到老師講解,請自行收視youTube,有問題再提問");

System.out.println("(5) 下課前,學生必須將範例與自我挑戰的製作結果上傳給老師");

System.out.println("(6) 缺課同學,請自行收視 youTube 練習,需繳交作業 ");

….